#include <stdlib.h> требуется только для объявления функции void perror(string); char *string; сообщение, поставляемое пользователем int errno; счетчик ошибок int sys_nerr; число системных сообщений char sts_errlist[sys_nerr]; массив сообщений об ошибках.
Описание.
Функция perror печатает сообщение об ошибке в stderr . В этом сообщении аргумент string печатается первым, затем печатает ся двоеточие, системное сообщение об ошибке для последнего библиотечного вызова, выработавшего ошибку, и новая строка. Номер действительной ошибки хранится в переменной errno , которая объявлена на внешнем уровне. Системное сообщение об ошибке доступно через переменную sys_errlist , которая является массивом сообщений для счетчика ошибок.
Функция perror печатает приблизительное сообщение об ошибке, используя значение errno как индекс для sys_errlist . Значение переменной sys_nerr определяется как максимальное число элементов в массиве sys_errlist.
Чтобы выработать правильный результат, функция perror должна быть вызвана сразу же после библиотечной процедуры, возвращающей ошибку. Иначе значение errno может быть перезаписано для последующих вызовов.
Возвращаемое значение.
Функция perror не возвращает никакого значения.
Замечание.
В MS DOS некоторые значения errno , приведенные в <errno.h>, не используются. Смотрите приложение "Сообщение об ошибках", где приведен список значений errno , используемых в MS DOS , и соответствующие сообщения об ошибках. Для значения errno , не использующегося в MS DOS , функция perror печатает пустую строку.
Пример.
#include <fcntl.h> #include <sys\types.h> #include <sys\stat.h> #include <io.h> #include <stdlib.h> int fh1, fh2; fh1 = open("data1", O_RDONLY); if (fh1 == -1) perror("open failed on input file"); fh2 = open("data2", O_WRONLY:O_TRUNC:O_CREAT, S_IREAD:S_IWRITE); if (fh2 == -1) perror("open failed on output file");.